#include <exception>

struct index_out_of_bounds : std::exception
{
    const char* what() const throw();
};

struct empty_list : std::exception
{
    const char* what() const throw();
};

const char* index_out_of_bounds::what() const throw()
{
    return "index out of bounds";
}

const char* empty_list::what() const throw()
{
    return "empty list";
}